#ifndef SCANNER_H
#define SCANNER_H

typedef enum enumTokens {
    TOK_ID=0,      // identifikator
    TOK_FUNC,        // funkce (pouze pro syntax. analyzu)
    TOK_SEMI,       // ;
    TOK_COMMA,           // ,
/*klicova slova:*/
    TOK_DO,
    TOK_ELSE,
    TOK_ENDSEMI, // end;    testujeme i strednik, nikdy se nevyskytuje "end" bez ";"
    TOK_FALSE,
    TOK_FUNCTION,
    TOK_IF,
    TOK_LOCAL,
    TOK_NIL,
    TOK_READ,
    TOK_RETURN,
    TOK_THEN,
	TOK_TEST,
    TOK_TRUE,
    TOK_WHILE,
    TOK_WRITE,

    TOK_OTHERKEYWORDS,
    /*and, break, elseif, for, in, not, or, repeat, until    */
    //formaty pro read
    TOK_FORM_A,
    TOK_FORM_L,
    TOK_FORM_N,
    TOK_NUMBER,


    TOK_PLUS,        // znamenko +
    TOK_MINUS,           //          -
    TOK_MULT,        //          *
    TOK_DIV,          //          /
    TOK_LESS,            //          <
    TOK_LESSQ,          //          <=
    TOK_GREAT,           //          >
    TOK_GREATQ,         //          >=
    TOK_EQ,           //          ==
    TOK_NEQ,        //           ~=
    TOK_ASSIGN,          //          =
    TOK_POWER,          //          ^
    TOK_CONCAT,          //          .. konkatenace

    TOK_LBRACKET,     // (
    TOK_RBRACKET,    // )



    TOK_EOF              // konec souboru
} TenumTokens;


// struktura tokenu
typedef struct Token {
    TenumTokens  Type;     // typ tokenu
    char        *pData;     // data token
} TToken;


void SetInputStream(FILE *f);
int GetNextToken(TScannerToken *pToken);
void FreeTokenData(TScannerToken *Token);

#endif // SCANNER_H
